
export interface IFunction<T = any> {
    (x?: any): T;
}

export interface IObject<T = any> {
    [key: string]: T;
}

export interface IHttpResponse {
    code: number;
    msg: string;
    data: any;
}

/**
 * 菜单
 */
export interface IServerMenus {
    createDate: string;
    icon: string | boolean;
    id: string;
    name: string;
    parentName: string;
    permissions: string;
    pid: string;
    sort: number;
    type: number;
    url: string;
    openStyle: number;
    redirect?: string;
    children?: IServerMenus[];
}

export interface ICacheOptions {
    /**
     * 是否取值后立即删除缓存
     */
    isDelete?: boolean;
    /**
     * 是否采用JSON格式化缓存值
     */
    isParse?: boolean;
    /**
     * 是否采用会话缓存介质
     */
    isSessionStorage?: boolean;
}

export interface IViewHooksOptions {
    //  设置属性
    /**
     * 此页面是否在创建时，调用查询数据列表接口？
     */
    createdIsNeed?: boolean;
    /**
     * 此页面是否在激活（进入）时，调用查询数据列表接口？
     */
    activatedIsNeed?: boolean;
    /**
     * 数据列表接口，API地址
     */
    getDataListURL?: string;
    /**
     * 数据列表接口，是否需要分页？
     */
    getDataListIsPage?: boolean;
    /**
     * 删除接口，API地址
     */
    deleteURL?: "";
    /**
     * 删除接口，是否需要批量？
     */
    deleteIsBatch?: boolean;
    /**
     * 删除接口，批量状态下由那个key进行标记操作？比如：pid，uid...
     */
    deleteIsBatchKey?: string;
    /**
     * 导出接口，API地址
     */
    exportURL?: string;

    /**
     * 查询条件
     */
    dataForm?: IObject;
    /**
     * 数据列表
     */
    dataList?: IObject[];
    /**
     * 排序，asc／desc
     */
    order?: string;
    /**
     * 排序，字段
     */
    orderField?: string;
    /**
     * 当前页码
     */
    page?: number;
    /**
     * 每页数
     */
    limit?: number;
    /**
     * 总条数
     */
    total?: number;
    /**
     * 数据列表，loading状态
     */
    dataListLoading?: boolean;
    /**
     * 数据列表，多选项
     */
    dataListSelections?: IObject[];
    /**
     * 新增／更新，弹窗visible状态
     */
    addOrUpdateVisible?: boolean;
    /**
     * 新增／更新，组件
     */
    addOrUpdate?: IObject;
    elTable?: IObject;
    /**
     * 触底加载数据判断,手机端用到
     */
    refreshData?:boolean
}

export interface IViewHooks extends IViewHooksOptions, IObject {

    /**
     * 查询列表记录
     */
    query: () => void;

}
